a660ef6c1fad0971767e3b0f7875471098692e58,src/main/java/com/steelbridgelabs/oss/neo4j/structure/Neo4JVertex.java,Neo4JVertex,vertices,#Direction#String#,544

Before Change


                // create string builder
                StringBuilder builder = new StringBuilder();
                // match clause
                builder.append("MATCH ").append(matchPattern("n", "id")).append("<-[r").append(set.stream().map(label -> ":`" + label + "`").collect(Collectors.joining("|"))).append("]-(m").append(processLabels(Collections.emptySet(), true)).append(")");
                // edge ids already in memory
                List<Object> identifiers = inEdges.stream().map(Neo4JEdge::id).collect(Collectors.toList());
                // process where clause

After Change


            // check we have all edges in memory
            if (!inEdgesLoaded) {
                // labels we need to query for
                Set<String> relationshipLabels = set.stream().filter(item -> !inEdgeLabels.contains(item)).collect(Collectors.toSet());
                // check query is required for labels
                if (set.isEmpty() || !relationshipLabels.isEmpty()) {
                    // create string builder
                    StringBuilder builder = new StringBuilder();
                    // match clause
                    builder.append("MATCH ").append(matchPattern("n", "id")).append("<-[r").append(relationshipLabels.stream().map(label -> ":`" + label + "`").collect(Collectors.joining("|"))).append("]-(m").append(processLabels(Collections.emptySet(), true)).append(")");
                    // edge ids already in memory
                    List<Object> identifiers = inEdges.stream().map(Neo4JEdge::id).collect(Collectors.toList());
                    // process where clause
                    processEdgesWhereClause("m", identifiers, "r", builder, parameters);
                    // return
                    builder.append(" RETURN m");
                    // create statement
                    Statement statement = new Statement(builder.toString(), parameters);
                    // execute statement
                    StatementResult result = session.executeStatement(statement);
                    // execute command
                    Stream<Vertex> query = session.vertices(result);
                    // return copy since elements can be deleted in the middle of the loop
                    Iterator<Vertex> iterator = Stream.concat((labels.length != 0 ? inEdges.stream().filter(edge -> set.contains(edge.label())) : inEdges.stream()).map(Edge::outVertex), query)
                        .collect(Collectors.toList())
                        .iterator();
                    // process summary (query has been already consumed by collector)
                    ResultSummaryLogger.log(result.consume());
                    // return iterator
                    return iterator;
                }
            }
            // edges in memory (return copy since elements can be deleted in the middle of the loop
            return (labels.length != 0 ? inEdges.stream().filter(edge -> set.contains(edge.label())) : inEdges.stream()).map(Edge::outVertex)
                .collect(Collectors.toList())
                .iterator();
        }
        // check we have all edges in memory
        if (!outEdgesLoaded || !inEdgesLoaded) {
            // check we have labels already in memory
            if (set.isEmpty() || !outEdgeLabels.containsAll(set) || !inEdgeLabels.containsAll(set)) {
                // create string builder
                StringBuilder builder = new StringBuilder();
                // match clause